package cn.it.shop.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import cn.it.shop.model.flow.FlowItem;
import cn.it.shop.util.HttpUtils;
import net.sf.json.JSONObject;

/***
 * 流程控制层
 * @author fangyangsheng
 *
 */
@Controller
@RequestMapping("/flow")
public class FlowController extends BaseController{
	
	/**
	 * 添加投诉信息
	 * @param Complaint 投诉实体
	 * @param request 
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/complaint/addComplaint")
	public String addComplaint(HttpServletRequest request){
		Map<String, String> map = new HashMap<String, String>();
		//获取HttpServletRequest所有的参数 
		map = HttpUtils.getRequest(request);
		//将投诉信息保存进数据库
		System.out.println("opid "+map);
		//设置判断当前流程是否有下个节点所需要的参数
		this.setFlowMessage(request, map);
		
		JSONObject json = new JSONObject();
		json.put("msg",true);
		//重定向到原来的页面
		return json.toString();
	}
	
	
	/**
	 * 添加建议信息
	 * @param Complaint 投诉实体
	 * @param request 
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/proposal/addProposal")
	public String addProposal(HttpServletRequest request){
		Map<String, String> map = new HashMap<String, String>();
		//获取HttpServletRequest所有的参数 
		map = HttpUtils.getRequest(request);
		//将建议信息保存进数据库
		System.out.println("后续流程1 "+map);
		//设置判断当前流程是否有下个节点所需要的参数
		this.setFlowMessage(request, map);
		
		JSONObject json = new JSONObject();
		json.put("msg",true);
		//重定向到原来的页面
		return json.toString();
	}

	
	/****
	 * 设置判断当前流程是否有下个节点所需要的参数
	 * @param request
	 * @param map
	 */
	private void setFlowMessage(HttpServletRequest request, Map<String, String> map) {
		request.setAttribute("openid", map.get("openid"));//粉丝id
		request.setAttribute("flowReplyId", map.get("flowReplyId"));//流程主体id
		request.setAttribute("sortnum", map.get("sortnum"));//保存当前步骤
		//判断当前是否是最后一个节点等业务需要,只需要在流程主体(第一次执行)时保存进session,之后要用取出,无需再查
		List<FlowItem> flowItemlist = flowItemService.queryByFlowReplyId(Long.valueOf(map.get("flowReplyId")));
		request.getSession().setAttribute("flowItemlist", flowItemlist);//查询是否有后续流程
	}
	
	
}
